from sklearn import datasets  # sklearn的数据集
from sklearn.neighbors import KNeighborsClassifier  # sklearn模块的KNN类

import numpy as np  # 矩阵运算库numpy
np.random.seed(0)

iris = datasets.load_iris()
# 变量
iris_x = iris.data
# 结果：有3个类别，分别是0， 1， 2
iris_y = iris.target

# 生成一个不重复的随机数组，元素值取[0~数据集长度]
randomarr = np.random.permutation(len(iris_x))

# 随机数组作为索引，划分训练集和测试集
iris_x_train = iris_x[randomarr[:-10]]
iris_y_train = iris_y[randomarr[:-10]]
iris_x_test = iris_x[randomarr[-10:]]
iris_y_test = iris_y[randomarr[-10:]]

# 导入模型算法
knn = KNeighborsClassifier()
# 传入训练集训练模型
knn.fit(iris_x_train, iris_y_train)

# 使用训练好的算法作预测
iris_y_predict = knn.predict(iris_x_test)

# 预测概率，在每个类别结果上的概率，取概率最大的作为结果
probility = knn.predict_proba(iris_x_test)

# 传入一个新数据以后，查找它最近的5个样本
neighborpoint = knn.kneighbors([iris_x_test[-1]], 5)

# 在测试集上预测准确率，作为分数
score = knn.score(iris_x_test, iris_y_test, sample_weight=None)
